home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_d / wptools1.zip / DEMO / MDI_PRJ / MAIN.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-13  |  8KB  |  262 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls, Menus,
  6.   StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, WPStatus, PrinPr, Wpstat2, WPTbar, WPDefs;
  7.  
  8. type                 
  9.   TMainForm = class(TForm)
  10.     MainMenu1: TMainMenu;        
  11.     File1: TMenuItem;
  12.     FileNewItem: TMenuItem;
  13.     FileOpenItem: TMenuItem;
  14.     FileCloseItem: TMenuItem;
  15.     Window1: TMenuItem;
  16.     Help1: TMenuItem;
  17.     N1: TMenuItem;
  18.     FileExitItem: TMenuItem;
  19.     WindowCascadeItem: TMenuItem;
  20.     WindowTileItem: TMenuItem;
  21.     WindowArrangeItem: TMenuItem;
  22.     HelpAboutItem: TMenuItem;
  23.     OpenDialog: TOpenDialog;
  24.     FileSaveItem: TMenuItem;
  25.     FileSaveAsItem: TMenuItem;
  26.     Edit1: TMenuItem;
  27.     CutItem: TMenuItem;
  28.     CopyItem: TMenuItem;
  29.     PasteItem: TMenuItem;
  30.     WindowMinimizeItem: TMenuItem;
  31.     WPToolBar1: TWPToolBar;
  32.     WPAltStatusBar1: TWPAltStatusBar;
  33.     Preview: TButton;
  34.     procedure FormCreate(Sender: TObject);
  35.     procedure FileNewItemClick(Sender: TObject);
  36.     procedure WindowCascadeItemClick(Sender: TObject);
  37.     procedure UpdateMenuItems(Sender: TObject);
  38.     procedure WindowTileItemClick(Sender: TObject);
  39.     procedure WindowArrangeItemClick(Sender: TObject);
  40.     procedure FileCloseItemClick(Sender: TObject);
  41.     procedure FileOpenItemClick(Sender: TObject);
  42.     procedure FileExitItemClick(Sender: TObject);
  43.     procedure FileSaveItemClick(Sender: TObject);
  44.     procedure FileSaveAsItemClick(Sender: TObject);
  45.     procedure CutItemClick(Sender: TObject);
  46.     procedure CopyItemClick(Sender: TObject);
  47.     procedure PasteItemClick(Sender: TObject);
  48.     procedure WindowMinimizeItemClick(Sender: TObject);
  49.     procedure FormDestroy(Sender: TObject);
  50.     procedure WPToolBar1IconSelection(Sender: TObject; var Typ: TWpSelNr;
  51.       const str: string; const group, num, index: Integer);
  52.     procedure PreviewClick(Sender: TObject);
  53.   private
  54.     { Private declarations }
  55.     procedure CreateMDIChild(const Name: string);
  56.     procedure ShowHint(Sender: TObject);
  57.     procedure EditStateEvent(Sender: TObject;
  58.             selection_marked, clipboard_not_empty: Boolean);
  59.   end;
  60.  
  61. var
  62.   MainForm: TMainForm;
  63.  
  64. implementation
  65.  
  66. {$R *.DFM}
  67.  
  68.  
  69. uses ChildWin;
  70.  
  71. procedure TMainForm.FormCreate(Sender: TObject);
  72. begin
  73.   Application.OnHint := ShowHint;
  74.   Screen.OnActiveFormChange := UpdateMenuItems;
  75.   WPToolBar1.AddControl(Preview);
  76. end;
  77.  
  78. procedure TMainForm.ShowHint(Sender: TObject);
  79. begin
  80.   WPAltStatusBar1.SetString(stStatus,Application.Hint); {NEW}
  81. end;
  82.  
  83. procedure TMainForm.CreateMDIChild(const Name: string);
  84. var
  85.   Child: TMDIChild;
  86. begin
  87.   GlobalToolBar := WPToolBar1;
  88.   GlobalStatusBar := WPAltStatusBar1;
  89.   { create a new MDI child window }
  90.   Child := TMDIChild.Create(Application);
  91.   Child.Caption := Name;
  92.   Child.Memo.EditStateEvent:=EditStateEvent; { NEW }
  93. end;
  94.  
  95. procedure TMainForm.FileNewItemClick(Sender: TObject);
  96. begin
  97.   CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));
  98. end;
  99.  
  100. procedure TMainForm.FileOpenItemClick(Sender: TObject);
  101. begin
  102.   if OpenDialog.Execute then
  103.   begin  CreateMDIChild(OpenDialog.FileName);
  104.          (ActiveMDIChild as TMDIChild).Memo.Clear;
  105.          (ActiveMDIChild as TMDIChild).Memo.LoadFromFile(OpenDialog.FileName); {NEW}
  106.   end;
  107. end;
  108.  
  109. procedure TMainForm.FileCloseItemClick(Sender: TObject);
  110. begin
  111.   if ActiveMDIChild <> nil then
  112.     ActiveMDIChild.Close;
  113. end;
  114.  
  115. procedure TMainForm.FileSaveItemClick(Sender: TObject);
  116. begin
  117.   { save current file (ActiveMDIChild points to the window) }
  118.   (ActiveMDIChild as TMDIChild).Memo.Save;  {NEW}
  119. end;
  120.  
  121. procedure TMainForm.FileSaveAsItemClick(Sender: TObject);
  122. begin
  123.   { save current file under new name }
  124.   (ActiveMDIChild as TMDIChild).Memo.SaveAs; {NEW}
  125. end;
  126.  
  127. procedure TMainForm.FileExitItemClick(Sender: TObject);
  128. begin
  129.   Close;
  130. end;
  131.  
  132. procedure TMainForm.CutItemClick(Sender: TObject);
  133. begin
  134.   {cut selection to clipboard}
  135.   (ActiveMDIChild as TMDIChild).Memo.CutToClipboard; {NEW}
  136. end;
  137.  
  138. procedure TMainForm.CopyItemClick(Sender: TObject);
  139. begin
  140.   {copy selection to clipboard}
  141.   (ActiveMDIChild as TMDIChild).Memo.CopyToClipboard; {NEW}
  142. end;
  143.  
  144. procedure TMainForm.PasteItemClick(Sender: TObject);
  145. begin
  146.   {paste from clipboard}
  147.    (ActiveMDIChild as TMDIChild).Memo.PasteFromClipboard; {NEW}
  148. end;
  149.  
  150. procedure EditStateEvent(Sender: TObject;    { NEW }
  151.             selection_marked, clipboard_not_empty: Boolean);
  152. begin
  153.  
  154. end;
  155.  
  156.  
  157. procedure TMainForm.WindowCascadeItemClick(Sender: TObject);
  158. begin
  159.   Cascade;
  160. end;
  161.  
  162.  
  163. procedure TMainForm.WindowTileItemClick(Sender: TObject);
  164. begin
  165.   Tile;
  166. end;
  167.  
  168. procedure TMainForm.WindowArrangeItemClick(Sender: TObject);
  169. begin
  170.   ArrangeIcons;
  171. end;
  172.  
  173. procedure TMainForm.WindowMinimizeItemClick(Sender: TObject);
  174. var
  175.   I: Integer;
  176. begin
  177.   { Must be done backwards through the MDIChildren array }
  178.   for I := MDIChildCount - 1 downto 0 do
  179.     MDIChildren[I].WindowState := wsMinimized;
  180. end;
  181.  
  182. procedure TMainForm.UpdateMenuItems(Sender: TObject);
  183. begin
  184.   FileCloseItem.Enabled := MDIChildCount > 0;
  185.   FileSaveItem.Enabled := MDIChildCount > 0;
  186.   FileSaveAsItem.Enabled := MDIChildCount > 0;
  187.   CutItem.Enabled := MDIChildCount > 0;
  188.   CopyItem.Enabled := MDIChildCount > 0;
  189.   PasteItem.Enabled := MDIChildCount > 0;
  190.   WindowCascadeItem.Enabled := MDIChildCount > 0;
  191.   WindowTileItem.Enabled := MDIChildCount > 0;
  192.   WindowArrangeItem.Enabled := MDIChildCount > 0;
  193.   WindowMinimizeItem.Enabled := MDIChildCount > 0;
  194. end;
  195.  
  196. procedure TMainForm.FormDestroy(Sender: TObject);
  197. begin
  198.   Screen.OnActiveFormChange := nil;
  199. end;
  200.  
  201. procedure TMainForm.WPToolBar1IconSelection(Sender: TObject; var Typ: TWpSelNr;
  202.   const str: string; const group, num, index: Integer);
  203. begin
  204.    if Typ<>wptNone then
  205.    begin
  206.      if typ=wptIconSel then
  207.      begin
  208.      if group=WPI_GR_DISK then case num of
  209.        WPI_CO_OPEN : begin if OpenDialog.Execute then
  210.                            begin CreateMDIChild(OpenDialog.FileName);
  211.                               if ActiveMDIChild <> nil then
  212.                               begin
  213.                                 (ActiveMDIChild as TMDIChild).Memo.Clear;
  214.                                 (ActiveMDIChild as TMDIChild).
  215.                                       Memo.LoadFromFile(OpenDialog.FileName);
  216.                               end;
  217.                            end;
  218.                            if WPToolBar1<>nil then
  219.                               WPToolBar1.DeselectIcon(0,WPI_GR_DISK,WPI_CO_OPEN);
  220.                            Typ:=wptNone;
  221.                      end;
  222.        WPI_CO_ClOSE : begin
  223.                             if ActiveMDIChild <> nil then
  224.                             begin
  225.                                 (ActiveMDIChild as TMDIChild).Memo.Save;
  226.                                 ActiveMDIChild.Close;
  227.                             end;
  228.                             if WPToolBar1<>nil then
  229.                               WPToolBar1.DeselectIcon(0,WPI_GR_DISK,WPI_CO_CLOSE);
  230.                             Typ:=wptNone;
  231.                      end;
  232.        end;  end;
  233.    end;
  234. end;
  235.  
  236. procedure TMainForm.PreviewClick(Sender: TObject);
  237. begin
  238.   if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
  239.   with (ActiveMDIChild as TMDIChild) do
  240.   try
  241.       WPRuler1.Visible := FALSE;
  242.       PrintPreview := TPrintPreview.Create(Self);
  243.       PrintPreview.WordProcessor := Memo;
  244.       PrintPreview.ShowModal;
  245.   finally
  246.       WPRuler1.Visible := TRUE;
  247.       PrintPreview.Free;
  248.   end;
  249. end;
  250.  
  251. { NEW }
  252. procedure TMainForm.EditStateEvent(Sender: TObject;
  253.   selection_marked, clipboard_not_empty: Boolean);
  254. begin
  255.   CutItem.Enabled := selection_marked;
  256.   CopyItem.Enabled := selection_marked;
  257.   PasteItem.Enabled := clipboard_not_empty;
  258. end;
  259.  
  260.  
  261. end.
  262.